1. Field of the Invention
Various embodiments disclosed herein relate to the data processing field. More specifically, various embodiments relates to the deployment of virtual appliances.
2. Description of Related Art
Virtual appliances are a specific type of software appliances. In general, a software appliance is a software solution including a software application (i.e., one or more application programs performing a specific user task) and a Just Enough Operating System, or JeOS (i.e., a limited operating system specifically tailored to support the software application), which are encapsulated in a pre-built, self-contained unit; the software appliance provides a simplified management (i.e., development, deployment and maintenance) and an improved isolation (with respect to a standard software application running on a full general-purpose operating system).
In particular, a virtual appliance is a software appliance designed to run in a virtualization environment; for this purpose, the virtual appliance includes one or more virtual machines (i.e., emulations by software of physical machines), each one with a corresponding operating system and application programs. Virtual appliances are particularly advantageous in cloud computing (wherein multiple services are provided to computers on demand) and in grid computing (wherein multiple loosely coupled computers cooperate to perform very complex tasks); indeed, in these cases virtual appliances allow provisioning cloud/grid nodes in a very simple and fast way. Moreover, the virtual appliances allow the delivery of software applications designed to run locally in a Software as a Service (SaaS) mode (wherein they are exploited on a pay-per-use base), without requiring the re-design of the software applications for multi-tenancy (wherein single instances thereof run on servers for multiple clients, or tenants).
A problem of the virtual appliances is the difficulty of ensuring their compliance with applicable license conditions in a data processing center (including one or more physical machines, or computers) wherein they are to be deployed.
For this purpose, some techniques have been proposed in the art.
For example, US-A-2008/0134176 (the entire disclosure of which is herein incorporated by reference) discloses a technique for enforcing compliance of a virtual machine (or any other virtual environment, including a virtual appliance) to compliance policies (including licensing requirements). For this purpose, management information about the virtual machines (including what applications are installed and which ones are automatically started) is generated and saved (for example, when the virtual machine is created, discovered or registered); when a request to execute the virtual machine is detected, this information is checked against the compliance policies before the virtual machine is allowed to execute; moreover, it is also possible to adapt the virtual machine (either temporary or permanently) so as to fulfill the compliance policies (for example, by obtaining necessary licensing or issuing corresponding notifications to an administrator).
US-A-2009/0249329 (the entire disclosure of which is herein incorporated by reference) discloses a technique for enforcing license compliance of a software application provided as a service within a virtual machine. For this purpose, licensing restrictions are added as metadata to an image of the virtual machine; whenever a user attempts to initiate the virtual machine, a virtual machine loader checks the licensing restrictions in order to allow or prevent the loading of the virtual machine. Alternatively, the same operation may also be performed whenever the virtual machine is started by a corresponding BIOS (retrieving the licensing restrictions from a virtual disk), or whenever the virtual machine moves between a kernel mode of operation and a device access mode of operation by a licensing mode enforcement service.
US-A-2009/0228984 (the entire disclosure of which is herein incorporated by reference) discloses a technique for enforcing license compliance in a computer (including a virtual machine). For this purpose, when a new software is to be deployed, a configuration manager determines whether additional licenses are needed, according to information extracted from a licensing data store (wherein the licenses are classified in a taxonomy) and information gathered about the virtual machine. If additional licenses are need, the configuration manager determines what action is required (for example, stopping the deployment or providing a notification) according to predefined business rules, and it may also provide a cost analysis of the additional licenses.
U.S. Pat. No. 7,313,512 (the entire disclosure of which is herein incorporated by reference) discloses a technique for licensing software in an emulated computing environment. For this purpose, whenever a virtual machine is loaded the corresponding operating system determines whether it is a guest operating system running on a virtual machine instead of on a physical machine (for example, in response to the detection of a license card consisting of an emulated hardware device). An emulation program requests a license key for the guest operating system from a key server (maintaining a corresponding count). If the license key is available, the guest operating system can complete its initialization; conversely, when the count of the license keys becomes zero the emulation program interrupts the initialization of the guest operating system thereby preventing the virtual machine from running.
US-A-2009/0328225 (the entire disclosure of which is herein incorporated by reference) discloses a technique for controlling execution of application programs within virtual machines. For this purpose, whenever an application program is loaded for execution, a corresponding initialization routine calls a licensing module. In turn, the licensing module queries a virtual policy enforcer layer (outside the virtual machine), which allows or prevents the execution of the application program according to the result of an authentication of the application program against a license permission file.
However, all the above-mentioned documents require that the virtual machines should already be deployed and started before verifying their compliance with the license conditions (so that corresponding actions—for example, preventing the loading of the virtual machines—may be taken). Therefore, these techniques are mainly based on an enforcement scheme, wherein the only purpose of the verification is of maintaining the license compliance.
Moreover, US-A-2009/0217296 (the entire disclosure of which is herein incorporated by reference) discloses a technique for determining the benefit of implementing virtualization technologies. For this purpose, a set of agents (each one in a corresponding virtual machine) or a single agent (in a virtual machine controller) gathers information about operation of the virtual machines relevant to the benefit analysis (for example, their starting, closure, upgrade, or migration); a central data collector collects (and aggregates) this information. The collected information and static information relevant to the benefit analysis (for example, physical machine characteristics and costs, virtual machine characteristics and costs—including license fees) are stored in a central database. A virtual infrastructure optimizer determines a benefit of implementing virtualization technologies, as a difference between a total cost of ownership based on physical machines and a total cost of ownership based on virtual machines being determined according to the collected information (over a predetermined period—for example, a month) and the static information. In addition, it is also possible to sent alerts providing suggested actions (for example, installing more virtual machines to take advantage of unused benefits or disable virtual machines to save corresponding costs).
However, this document is completely silent about the deployment of virtual appliances (and of their licensing compliance).
Therefore, the task of ensuring the license compliance of a data processing center remains very complex. This problem is particular acute in large virtual appliances—for example, conforming to the Service Oriented Architecture, or SOA (providing a suite of loosely coupled services). Indeed, in this case each virtual appliance may include multiple application tiers, each one of them in turn including multiple virtual machines (for example, a typical web application with a web tier implementing a presentation logic, an application server tier implementing a business logic, and a back-end database tier implementing a data management logic). Moreover, the problem is exacerbated in cloud computing, wherein a high number of heterogeneous virtual appliances are continually requested (as a sort of infinite resources). Moreover, the problem is very difficult to manage because of the large variety of license conditions that are provided by different vendors of the virtual appliances.
It is then not possible to manage the deployment of the virtual appliances in an efficient way (since it is very difficult to cope with the problem manually for a system administrator). This may have a detrimental effect on the cost of ownership of the data processing center. In any case, the result strongly depends on the skill of the system administrator.